package RealizeFunction;

import java.util.Arrays;

public class MyArrayList {
    public Object[] arr = new Object[3];
    protected int size = 0;

    //1.向集合(this)中末尾添加元素
    public void add(Object obj) {
        if (size == arr.length) {
            arr = Arrays.copyOf(arr, arr.length + 3);
        }
            arr[size] = obj;
            size++;
    }
    //2.向集合index的位置中插入obj元素
    public void add(int index,Object obj){
        if (index < 0 || index > size-1){
            return;
        }
        if (size==arr.length) {
            arr = Arrays.copyOf(arr, arr.length + 3);
            for (int i = size - 1; i > index; i--) {
                arr[i + 1] = arr[i];
            }
        }
        arr[index]=obj;
        size++;
    }
    //3.从集合中获得指定位置(index)的元素
    public Object get(int index){
        return arr[index];
    }
    //4.替换指定位置上的元素，替换成obj，并且返回被替换的元素
    public Object set(int index,Object o){
        Object obj = arr[index];
        arr[index] = o;
        return obj;
    }
    //5.删除指定位置(index)上的元素，并且返回删除的元素
    public Object delete(int index){
        if(index <0 || index > size-1){
            return null;
        }
        Object obj = arr[index];
        for (int i = index; i < size; i++) {
            arr[i]=arr[i+1];
        }
        size--;
        return obj;
    }
    //6.删除第一个指定元素(obj)
    public void delete(Object obj){
        for (int i = 0; i < size; i++) {
            if(arr[i] .equals(obj)){
                for(int j = i; j < size;j++){
                    arr[j] =arr[j+1];
                }
                size--;
                break;
            }
        }

    }
    //7.获得集合中的元素个数
    public int sum(){
        return size;
    }
    //8.判断集合中是否存在指定元素obj
    public boolean judge(Object obj){
        for (int i = 0; i < size; i++) {
            if(arr[i].equals(obj)){
                return true;
            }
        }
        return false;
    }

    //9.判断集合是否为空：没有有效元素是空
    public boolean isEmpty(){
        if (size == 0){
            return true;
        }
        return false;
    }
    //10.打印出在集合中的有效元素
    public String toString(){
        StringBuilder sb = new StringBuilder("[");
        for (int i = 0; i < size; i++) {
            sb.append(arr[i] + ",");
        }
        sb.deleteCharAt(sb.length()-1);
        sb.append("]");
        return sb.toString();
    }
}

